"""
配置文件 - 用于管理不同环境的设置
"""
import os
from typing import Optional
from pathlib import Path
from dotenv import load_dotenv

# 加载.env文件
env_path = Path(__file__).parent / '.env'
if env_path.exists():
    load_dotenv(dotenv_path=env_path)
    print(f"已加载环境变量文件: {env_path}")
else:
    print(f"警告: 环境变量文件不存在: {env_path}")
    print(f"请从.env.example复制一个.env文件并配置您的凭证")

# 环境配置
class Config:
    # 百度智能云API配置
    API_KEY = os.getenv('BAIDU_API_KEY', 'UohB9sPnu3cmLwv6xUxLsGrx')
    SECRET_KEY = os.getenv('BAIDU_SECRET_KEY', 'nKxqleOKYmah4mFdz9t2pMM0xzk8WKlw')
    MODEL_NAME = os.getenv('BAIDU_MODEL_NAME', 'ERNIE-Bot-4')
    
    # API URL配置
    TOKEN_URL = "https://aip.baidubce.com/oauth/2.0/token"
    RAG_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro"
    
    # 网络配置
    HTTP_PROXY = os.getenv('HTTP_PROXY', '')  # 例如: http://127.0.0.1:7890
    VERIFY_SSL = os.getenv('VERIFY_SSL', 'true').lower() == 'true'
    
    # 知识库配置
    USE_KNOWLEDGE_BASE = os.getenv('USE_KNOWLEDGE_BASE', 'false').lower() == 'true'
    KNOWLEDGE_BASE_ID = os.getenv('KNOWLEDGE_BASE_ID', '')
    
    # 服务配置
    HOST = os.getenv('HOST', '0.0.0.0')
    PORT = int(os.getenv('PORT', '8000'))
    DEBUG = os.getenv('DEBUG', 'true').lower() == 'true'
    
    # 系统提示词
    SYSTEM_PROMPT = os.getenv('SYSTEM_PROMPT', '你是一个专业的电力系统助手，精通变电站、输电线路、配电网络等领域。请用专业且易懂的方式回答问题。')
    
    def __init__(self):
        # 验证必要配置
        self._validate_config()
    
    def _validate_config(self):
        """验证配置是否有效"""
        # 实际API_KEY已经设置在代码中或环境变量中，因此这里不应该显示警告
        # 只有当API_KEY为空时才显示警告
        if not self.API_KEY or self.API_KEY.strip() == "":
            print("警告: 百度智能云API凭证未设置，请在.env文件中设置BAIDU_API_KEY")
        
        if self.USE_KNOWLEDGE_BASE and (not self.KNOWLEDGE_BASE_ID or self.KNOWLEDGE_BASE_ID.strip() == ""):
            print("警告: 使用知识库模式但知识库ID未设置，将使用普通对话模式")
            # 如果配置了使用知识库但未提供知识库ID，则禁用知识库模式
            self.USE_KNOWLEDGE_BASE = False

# 导出当前配置
config = Config() 